package estacion.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Vector;

import estacion.dominio.Estacion;
import estacion.dominio.TiposLicencia;

public class FPEstacion {
	public static void insertEstacion(Estacion esta) throws Exception {
		//String SQL="Insert into persona (DNI) values (?)";
		String SQL="Insert into estacion (nombre) values('"+esta.getEstacion()+"')";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}

	//Elmina una Persona dado el dni
	public static void deleteEstacion(String nombre) throws Exception {
		String SQL="Delete from estacion where nombre=?";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setString(1, nombre);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}	
	}
	
	
	public static void modificarEstacion(String old_nombre, String new_nombre) throws Exception{
		
		String SQL="UPDATE estacion SET nombre='"+new_nombre+"' where nombre= '"+old_nombre+"'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement update=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			update=bd.prepareStatement(SQL);
			update.executeUpdate();			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}
	
	public static Estacion consultEstacion(String nombre_estacion) throws Exception {
		Estacion est=null;
		String SQL="Select * from estacion where nombre='"+nombre_estacion+"'";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				est = new Estacion();
				est.setEstacion(r.getString("nombre"));
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return est;
	}
	
	public static Vector<Estacion> getEstaciones() throws Exception {
		Vector<Estacion> result=new Vector<Estacion>();
		String SQL="Select nombre from estacion";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				Estacion e=new Estacion();
				e.setEstacion(r.getString("nombre"));
				result.add(e);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}

	public static List<Estacion> getEstacionOrigen(int cod_linea) throws Exception {
		Vector<Estacion> result=new Vector<Estacion>();
		String SQL="Select e.nombre from estacion e, tramo t where t.parada_origen=e.nombre and t.codigo_linea="+cod_linea;
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				Estacion e=new Estacion();
				e.setEstacion(r.getString("e.nombre"));
				result.add(e);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}

	public static List<Estacion> getEstacionDestino(int cod_linea) throws Exception {
		Vector<Estacion> result=new Vector<Estacion>();
		String SQL="Select e.nombre from estacion e, tramo t where t.parada_destino=e.nombre and t.codigo_linea="+cod_linea;
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				Estacion e=new Estacion();
				e.setEstacion(r.getString("e.nombre"));
				result.add(e);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}

}
